/**
 * <p>Title: UserGroupDao</p>
 * <p>Description: 用户组Dao接口</p>
 * <p>Copyright: Shanghai Batchsight Pharmaceutical Technologies, Inc. Copyright(c) 2016</p>
 * @author wan shuaishuai & qianpengji
 * @version 1.0
 * <pre>Histroy:
 *       2016-9-18  shuaishuai & qianpengji  Create
 *</pre>
*/
package cn.jhg.account.persist;

import java.util.List;
import java.util.Map;

import cn.jhg.account.entity.User;
import cn.jhg.account.entity.UserGroup;

public interface UserGroupDao {
	
	/**
	 * 按 ID 获取User Group 
	 *
	 * @param ugid	User Group ID
	 * @return User Group Object
	 */
	public UserGroup getUserGroupById(int id);
	
	/**
	 * 按名字获取User Group 
	 *
	 * @param name	User Group Name
	 * @return User Group Object
	 */
	public UserGroup getUserGroupByName(String name);
	
	/**
	 * 按代码获取User Group 
	 *
	 * @param code	User Group 代码
	 * @return User Group Object
	 */
	public UserGroup getUserGroupByCode(String code);
	
	/**
	 * 按名字查找 User Group（模糊查询），eg: 输入“员工”,返回所有名字中含有“员工”的用户组
	 *
	 * @param condition	查找条件
	 * @return	查找结果（a set of User Group Object）
	 */
	public List<Integer> findUserGroupsByName(String condition);
	
	/**
	 * 添加User Group 
	 *
	 * @param group	User Group Object
	 * @return Error Code
	 */
	public int addUserGroup(UserGroup userGroup);
	
	/**
	 * 更新 User Group 
	 *
	 * @param group	User Group Object
	 * @return	Error Code
	 */
	public int updateUserGroup(UserGroup userGroup);
	
	/**
	 * 失效 User Group 
	 *
	 * @param uid	User Group ID
	 * @return	Error Code
	 */
	public int invalidateUserGroup(UserGroup userGroup);
	
	/**
	 * 按code,名字,status查找 User Group
	 *
	 * @param code	查找条件
	 * @return	查找结果（a set of int）
	 */
	public List<Integer> findUserGroup(Map<String,String> map);
	/**
	 * 按用户组查询用户
	 *
	 * @param ugid	查找条件
	 * @return	查找结果（a set of User）
	 */
	public List<Integer> findUser(int id);
	/**
	 * 按用户组查询用户
	 *
	 * @param ugid	查找条件
	 * @return	查找结果（a set of User）
	 */
	public List<User> findUsers(int id);
	/**
	 * 按code,名字,status查找 User Group
	 *
	 * @param code	查找条件
	 * @return	查找结果（a set of int）
	 */
	public List<UserGroup> findUserGroups(Map<String,String> map);
	/**
	 * 在用户组中添加单个用户
	 * @param Map(ugid,uid)
	 * @return	int
	 */
	public int addMember(Map<String, Integer> map);
	/**
	 * 查询此用户组中是否有此用户
	 * @param Map(ugid,uid)
	 * @return	Map{uid=uid, ugid=ugid}
	 */
	public Map<String,Integer> findMember(Map<String,Integer> map);
	/**
	 * 删除用户组用户
	 * @param Map(ugid,uid)
	 * @return	int
	 */
	public int deleteMember(Map<String,Integer> map);
	
}
